import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.File;

public class Selenium2Example {

    public static  String  FIREFOX_PATH = "D:/Program Files (x86)/Mozilla Firefox/firefox.exe";
    public static  String  GECKO_PATH = "E:/develop/selenium/geckodriver-v0.19.0-win64/geckodriver.exe";

    public static void main(String[] args) {
        // Create a new instance of the Firefox driver
        // Notice that the remainder of the code relies on the interface,
        // not the implementation.

        //要调起新版本的firefox，需要geckodriver驱动（未设置时java.lang.IllegalStateException报错）
        System.setProperty("webdriver.gecko.driver", GECKO_PATH );
        //若无法打开Firefox浏览器，可设定Firefox浏览器的安装路径(未设置路径时path报错)
        System.setProperty("webdriver.firefox.bin", FIREFOX_PATH );
        WebDriver driver = new FirefoxDriver();

        /*File pathToFirefoxBinary = new File("D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
        FirefoxBinary firefoxbin = new FirefoxBinary(pathToFirefoxBinary);
        WebDriver driver = new FirefoxDriver(firefoxbin,null);//这里使用这个构造方法。*/

        // And now use this to visit Google
        driver.get("http://www.google.com");
        // Alternatively the same thing can be done like this
        // driver.navigate().to("http://www.google.com");

        // Find the text input element by its name
        WebElement element = driver.findElement(By.name("q"));

        // Enter something to search for
        element.sendKeys("Cheese!");

        // Now submit the form. WebDriver will find the form for us from the element
        element.submit();

        // Check the title of the page
        System.out.println("Page title is: " + driver.getTitle());

        // Google's search is rendered dynamically with JavaScript.
        // Wait for the page to load, timeout after 10 seconds
        (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return d.getTitle().toLowerCase().startsWith("cheese!");
            }
        });

        // Should see: "cheese! - Google Search"
        System.out.println("Page title is: " + driver.getTitle());

        //Close the browser
        //driver.quit();
    }

}
